//============================================================================================
/**
 * @file	nuts.h
 * @brief	木の実データ処理
 * @author	Hiroyuki Nakamura
 * @date	06.01.27
 */
//============================================================================================
#ifndef NUTS_H
#define NUTS_H

#include "system/arc_tool.h"
#include "savedata/seedbed.h"
#include "itemtool/myitem.h"
#include "itemtool/itemsym.h"

//============================================================================================
//	定数定義
//============================================================================================
typedef struct _NUTS_DATA	NUTSDATA;				// 木の実データ

// パラメータ取得定義
enum {
	NUTS_PRM_SIZE = 0,			// 大きさ
	NUTS_PRM_HARDNESS,			// 堅さ
	NUTS_PRM_MAGNIFICATION,		// 実の倍率
	NUTS_PRM_SPEED,				// 育つ速度
	NUTS_PRM_ABSORPTION,		// 根の吸収力
	NUTS_PRM_KARAI,				// 辛さ
	NUTS_PRM_SIBUI,				// 渋さ
	NUTS_PRM_AMAI,				// 甘さ
	NUTS_PRM_NIGAI,				// 苦さ
	NUTS_PRM_SUPPAI,			// 酸っぱさ
	NUTS_PRM_UMAI,				// 旨さ
};


//============================================================================================
//	プロトタイプ宣言
//============================================================================================

//--------------------------------------------------------------------------------------------
/**
 * 木の実データのハンドル取得
 *
 * @param	id		木の実番号
 * @param	heap	ヒープID
 *
 * @return	データハンドル
 */
//--------------------------------------------------------------------------------------------
extern ARCHANDLE * Nuts_DataHandleGet( u32 heap );

//--------------------------------------------------------------------------------------------
/**
 * 木の実データロード（ハンドル使用）
 *
 * @param	handle	データハンドル
 * @param	id		木の実番号
 * @param	heap	ヒープID
 *
 * @return	木の実データ
 */
//--------------------------------------------------------------------------------------------
extern NUTSDATA * Nuts_DataLoadHandle( ARCHANDLE * handle, u32 id, u32 heap );

//--------------------------------------------------------------------------------------------
/**
 * 木の実データハンドルを閉じる
 *
 * @param	handle	データハンドル
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void Nuts_DataHandleClose( ARCHANDLE * handle );

//--------------------------------------------------------------------------------------------
/**
 * 木の実データロード
 *
 * @param	id		木の実番号
 * @param	heap	ヒープID
 *
 * @return	木の実データ
 */
//--------------------------------------------------------------------------------------------
extern NUTSDATA * Nuts_DataLoad( u32 id, u32 heap );

//--------------------------------------------------------------------------------------------
/**
 * 木の実データロード（アイテム番号から）
 *
 * @param	item	アイテム番号
 * @param	heap	ヒープID
 *
 * @return	木の実データ
 */
//--------------------------------------------------------------------------------------------
extern NUTSDATA * Nuts_DataLoadItem( u32 item, u32 heap );

//--------------------------------------------------------------------------------------------
/**
 * 木の実パラメータ取得
 *
 * @param	dat		木の実データ
 * @param	prm		取得パラメータID
 *
 * @return	取得パラメータ
 */
//--------------------------------------------------------------------------------------------
extern u32 Nuts_ParamGet( NUTSDATA * dat, u32 prm );

//----------------------------------------------------------
/**
 * @brief	きのみID→アイテムナンバーに変換
 */
//----------------------------------------------------------
extern u16 SeedSys_Nuts2Item(int type);

//----------------------------------------------------------
/**
 * @brief	アイテムナンバー→きのみIDへの変換
 */
//----------------------------------------------------------
extern u16 SeedSys_Item2Nuts(int itemno);

//----------------------------------------------------------
/**
 * @brief	コヤシ指定→アイテムナンバーへの変換
 */
//----------------------------------------------------------
extern u16 SeedSys_Compost2Item(SEEDCOMPOST compost);

//----------------------------------------------------------
/**
 * @brief	アイテムナンバー→コヤシ指定への変換
 */
//----------------------------------------------------------
extern SEEDCOMPOST SeedSys_Item2Compost(int itemno);

//----------------------------------------------------------
/**
 * @brief	現在手持ちにある木の実の総数を取得
 *
 * @param	item_sv	手持ちアイテムセーブデータポインタ
 * @param	heapID ワーク取得に利用するヒープID
 */
//----------------------------------------------------------
extern u16 SeedSys_GetItemNutsNumAll(MYITEM* item_sv,int heapID);

//----------------------------------------------------------
/**
 * @brief	現在手持ちにあるこやしの総数を取得
 *
 * @param	item_sv	手持ちアイテムセーブデータポインタ
 * @param	heapID ワーク取得に利用するヒープID
 */
//----------------------------------------------------------
extern u16 SeedSys_GetItemCompostNumAll(MYITEM* item_sv,int heapID);

#endif	/* NUTS_H */